<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: segmentation/include/pcl/segmentation/grabcut_segmentation.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('grabcut__segmentation_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">grabcut_segmentation.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Software License Agreement (BSD License)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> *  Point Cloud Library (PCL) - www.pointclouds.org</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *  Copyright (c) 2012-, Open Perception, Inc.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *  All rights reserved.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *  Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *  modification, are permitted provided that the following conditions</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *  are met:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *   * Redistributions of source code must retain the above copyright</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *     notice, this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *   * Redistributions in binary form must reproduce the above</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *     copyright notice, this list of conditions and the following</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *     disclaimer in the documentation and/or other materials provided</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *     with the distribution.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *   * Neither the name of Willow Garage, Inc. nor the names of its</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *     contributors may be used to endorse or promote products derived</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *     from this software without specific prior written permission.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *  &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> *  POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> * $Id$</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#ifndef PCL_SEGMENTATION_GRABCUT</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#define PCL_SEGMENTATION_GRABCUT</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;pcl/point_cloud.h&gt;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;pcl/pcl_base.h&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="common_2include_2pcl_2point__types_8h.html">pcl/point_types.h</a>&gt;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;pcl/segmentation/boost.h&gt;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;pcl/search/search.h&gt;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">namespace </span>pcl</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;  <span class="keyword">namespace </span>segmentation</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;  {</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">namespace </span>grabcut</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    {</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html">   61</a></span>&#160;      <span class="keyword">class </span>PCL_EXPORTS <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html">BoykovKolmogorov</a></div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      {</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;          <span class="keyword">typedef</span> <span class="keywordtype">int</span> vertex_descriptor;</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;          <span class="keyword">typedef</span> <span class="keywordtype">double</span> edge_capacity_type;</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8903c612c1168079a47bf2cb0ff5f8c7">   68</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8903c612c1168079a47bf2cb0ff5f8c7">BoykovKolmogorov</a> (std::size_t max_nodes = 0);</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a1ad7468a502d40ccd9ee8ef44ef04eea">   70</a></span>&#160;          <span class="keyword">virtual</span> <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a1ad7468a502d40ccd9ee8ef44ef04eea">~BoykovKolmogorov</a> () {}</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;          <span class="keywordtype">size_t</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a62d106c586c83e9005302de2368f84da">   73</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a62d106c586c83e9005302de2368f84da">numNodes</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nodes_.size (); }</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a4337b04c14ebfba5b3b4563706c6737f">   76</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a4337b04c14ebfba5b3b4563706c6737f">reset</a> ();</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8575f4bd3e4d4d506aab2c54e4a5e72e">   79</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8575f4bd3e4d4d506aab2c54e4a5e72e">clear</a> ();</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;          <span class="keywordtype">int</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#ab6d400905673c4b9ec935a44791c01a3">   82</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#ab6d400905673c4b9ec935a44791c01a3">addNodes</a> (std::size_t n = 1);</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#acacea870da92b1a569a69a4c09511358">   85</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#acacea870da92b1a569a69a4c09511358">addConstant</a> (<span class="keywordtype">double</span> c) { flow_value_ += c; }</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a1f1f79e64c2c3d8cce48c6cf6dec8d63">   88</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a1f1f79e64c2c3d8cce48c6cf6dec8d63">addSourceEdge</a> (<span class="keywordtype">int</span> u, <span class="keywordtype">double</span> cap);</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a223cd3eb267bb2dbbc1233c3c9fc23b1">   91</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a223cd3eb267bb2dbbc1233c3c9fc23b1">addTargetEdge</a> (<span class="keywordtype">int</span> u, <span class="keywordtype">double</span> cap);</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aed1c7994a1ab333673043375276619dd">   95</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aed1c7994a1ab333673043375276619dd">addEdge</a> (<span class="keywordtype">int</span> u, <span class="keywordtype">int</span> v, <span class="keywordtype">double</span> cap_uv, <span class="keywordtype">double</span> cap_vu = 0.0);</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;          <span class="keywordtype">double</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa934e5f0053cce97093f5dd97f2a1980">   98</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa934e5f0053cce97093f5dd97f2a1980">solve</a> ();</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;          <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a06dfdb9ddf8f184ded86fb58a3dbd445">  101</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a06dfdb9ddf8f184ded86fb58a3dbd445">inSourceTree</a> (<span class="keywordtype">int</span> u)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (cut_[u] == SOURCE); }</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;          <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a660e9da2e61c98dccc2d33b29d0791d7">  104</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a660e9da2e61c98dccc2d33b29d0791d7">inSinkTree</a> (<span class="keywordtype">int</span> u)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (cut_[u] == TARGET); }</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;          <span class="keywordtype">double</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a68b2eaec251fb41c6a41bffefb66e80b">  107</a></span>&#160;          operator() (<span class="keywordtype">int</span> u, <span class="keywordtype">int</span> v) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;          <span class="keywordtype">double</span></div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;          getSourceEdgeCapacity (<span class="keywordtype">int</span> u) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;          <span class="keywordtype">double</span></div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;          getTargetEdgeCapacity (<span class="keywordtype">int</span> u) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a06025d5525ebc5e3e1eaf87d24afb9da">  117</a></span>&#160;          <span class="keyword">typedef</span> <span class="keyword">enum</span> { FREE = 0x00, SOURCE = 0x01, TARGET = 0x02 } nodestate;</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#adee34f9ab647ace5b14822ff434d72fb">  119</a></span>&#160;          <span class="keyword">typedef</span> std::map&lt;int, double&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#adee34f9ab647ace5b14822ff434d72fb">capacitated_edge</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a4915233eba8ce733879883f043355a9a">  121</a></span>&#160;          <span class="keyword">typedef</span> std::pair&lt;capacitated_edge::iterator, capacitated_edge::iterator&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a4915233eba8ce733879883f043355a9a">edge_pair</a>;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a00f1d195d1e804fb5109c345d97a6806">  124</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a00f1d195d1e804fb5109c345d97a6806">preAugmentPaths</a> ();</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#ace0c1b72070cea507cb09433fb877d79">  127</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#ace0c1b72070cea507cb09433fb877d79">initializeTrees</a> ();</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;          std::pair&lt;int, int&gt;</div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a61161a98ff353bf410c377cd6237b014">  130</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a61161a98ff353bf410c377cd6237b014">expandTrees</a> ();</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a304cea3dae4656b0e48617a27b78be73">  133</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a304cea3dae4656b0e48617a27b78be73">augmentPath</a> (<span class="keyword">const</span> std::pair&lt;int, int&gt;&amp; path, std::deque&lt;int&gt;&amp; orphans);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa87830572e5d176fc9b93a59b0e78b1b">  136</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa87830572e5d176fc9b93a59b0e78b1b">adoptOrphans</a> (std::deque&lt;int&gt;&amp; orphans);</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8e19d27bfcc7783a8973140dbbd86e9c">  138</a></span>&#160;          <span class="keywordtype">void</span> <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8e19d27bfcc7783a8973140dbbd86e9c">clearActive</a> ();</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;          <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a50d1dfc59492d885bcdc9acfb6b51fb4">  141</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a50d1dfc59492d885bcdc9acfb6b51fb4">isActiveSetEmpty</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (active_head_ == TERMINAL); }</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;          <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a429cf2fb98ced583e26b1b70a4f5d350">  144</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a429cf2fb98ced583e26b1b70a4f5d350">isActive</a> (<span class="keywordtype">int</span> u)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ((u == active_head_) || (active_list_[u].first != TERMINAL)); }</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a2b2b7c5eadacba3f73477771611c8e44">  147</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a2b2b7c5eadacba3f73477771611c8e44">markActive</a> (<span class="keywordtype">int</span> u);</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a60f4052e843bad644d30f47f84bca564">  150</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a60f4052e843bad644d30f47f84bca564">markInactive</a> (<span class="keywordtype">int</span> u);</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aefc40a1c6479d676cc99161243319aa9">  152</a></span>&#160;          std::vector&lt;double&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aefc40a1c6479d676cc99161243319aa9">source_edges_</a>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a572dceff93c2aec0c50b3215e902c53c">  154</a></span>&#160;          std::vector&lt;double&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a572dceff93c2aec0c50b3215e902c53c">target_edges_</a>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a29f92fe3de2e36ace334802f9bd82eab">  156</a></span>&#160;          std::vector&lt;capacitated_edge&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a29f92fe3de2e36ace334802f9bd82eab">nodes_</a>;</div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a0391da5166a52b7dc3c07dad3630650a">  158</a></span>&#160;          <span class="keywordtype">double</span> <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a0391da5166a52b7dc3c07dad3630650a">flow_value_</a>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a12a00bbbbec04bddc5a4b109bf1caa50">  160</a></span>&#160;          std::vector&lt;unsigned char&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a12a00bbbbec04bddc5a4b109bf1caa50">cut_</a>;</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="keyword">private</span>:</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a6be512418cba4019dcd7d2391915c7c6">  164</a></span>&#160;          <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a6be512418cba4019dcd7d2391915c7c6">TERMINAL</a>; <span class="comment">// -1</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a623178a7d87583cd117f902512b6bc7a">  166</a></span>&#160;<span class="comment"></span>          std::vector&lt;std::pair&lt;int, edge_pair&gt; &gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a623178a7d87583cd117f902512b6bc7a">parents_</a>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa41db19528abf4be9b162524086d5ab6">  168</a></span>&#160;          std::vector&lt;std::pair&lt;int, int&gt; &gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa41db19528abf4be9b162524086d5ab6">active_list_</a>;</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;          <span class="keywordtype">int</span> active_head_, active_tail_;</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      };</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">  173</a></span>&#160;      <span class="keyword">struct </span><a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      {</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> () : r (0), g (0), b (0) {}</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> (<span class="keywordtype">float</span> _r, <span class="keywordtype">float</span> _g, <span class="keywordtype">float</span> _b) : r(_r), g(_g), b(_b) {}</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> (<span class="keyword">const</span> <a class="code" href="structpcl_1_1_r_g_b.html">pcl::RGB</a>&amp; color) : r (color.r), g (color.g), b (color.b) {}</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160; </div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>T&gt;</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> (<span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; p);</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>T&gt;</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="keyword">operator</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> () <span class="keyword">const</span>;</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        <span class="keywordtype">float</span> r, g, b;</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      };</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      <span class="keyword">typedef</span> <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt;Color&gt;</a> <a class="code" href="classpcl_1_1_point_cloud.html">Image</a>;</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      <span class="keywordtype">float</span></div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;      colorDistance (<span class="keyword">const</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a>&amp; c2);</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      <span class="keyword">enum</span> TrimapValue { TrimapUnknown = -1, TrimapForeground, TrimapBackground };</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      <span class="keyword">enum</span> SegmentationValue { SegmentationForeground = 0, SegmentationBackground };</div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">  201</a></span>&#160;      <span class="keyword">struct </span><a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">Gaussian</a></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;      {</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">Gaussian</a> () {}</div>
<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#af1a98d6b653238bec0752db1190a368b">  205</a></span>&#160;        <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#af1a98d6b653238bec0752db1190a368b">mu</a>;</div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a7216976d40e15117fd7f5c450d0f081f">  207</a></span>&#160;        Eigen::Matrix3f <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a7216976d40e15117fd7f5c450d0f081f">covariance</a>;</div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a4dd037ad492196e9eed459f1762a4c69">  209</a></span>&#160;        <span class="keywordtype">float</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a4dd037ad492196e9eed459f1762a4c69">determinant</a>;</div>
<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a8eab0578f25643885261117e1b2e868f">  211</a></span>&#160;        Eigen::Matrix3f <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a8eab0578f25643885261117e1b2e868f">inverse</a>;</div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a464722f163acee0110b08eeb4c952fed">  213</a></span>&#160;        <span class="keywordtype">float</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a464722f163acee0110b08eeb4c952fed">pi</a>;</div>
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#aa92436d5571a19e48341798ca2f19b65">  215</a></span>&#160;        <span class="keywordtype">float</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#aa92436d5571a19e48341798ca2f19b65">eigenvalue</a>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a96d8e7d50478a2712d56437ed05e20ee">  217</a></span>&#160;        Eigen::Vector3f <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a96d8e7d50478a2712d56437ed05e20ee">eigenvector</a>;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      };</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160; </div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">  220</a></span>&#160;      <span class="keyword">class </span>PCL_EXPORTS <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">GMM</a></div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;      {</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a5219e6b9ee0ba89bf795cf151c14a61b">  224</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a5219e6b9ee0ba89bf795cf151c14a61b">GMM</a> () : gaussians_ (0) {}</div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a8c870011d933a72b1885f2ee923ced53">  226</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a8c870011d933a72b1885f2ee923ced53">GMM</a> (std::size_t K) : gaussians_ (K) {}</div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a3e99b01e190f53b08ca7fbba773a1755">  228</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a3e99b01e190f53b08ca7fbba773a1755">~GMM</a> () {}</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;          std::size_t</div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#aa89a83e75f62c730a7a3e171d9468af6">  231</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#aa89a83e75f62c730a7a3e171d9468af6">getK</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> gaussians_.size (); }</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;          <span class="keywordtype">void</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#aa03b1c650969a0cab96b582d9f05b30f">  234</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#aa03b1c650969a0cab96b582d9f05b30f">resize</a> (std::size_t K) { gaussians_.resize (K); }</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;          <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">Gaussian</a>&amp;</div>
<div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a60b6eb16f23da38a1a29a6b3e9464efc">  237</a></span>&#160;          operator[] (std::size_t pos) { <span class="keywordflow">return</span> (gaussians_[pos]); }</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;          <span class="keyword">const</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">Gaussian</a>&amp;</div>
<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#adff03b33a2c8cc417b127e23eaffffad">  240</a></span>&#160;          operator[] (std::size_t pos)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (gaussians_[pos]); }</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;          <span class="keywordtype">float</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#ab373bf483a57ede2e0339c910652b0aa">  243</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#ab373bf483a57ede2e0339c910652b0aa">probabilityDensity</a> (<span class="keyword">const</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> &amp;c);</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;          <span class="keywordtype">float</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a4b2b50be1a466d37389063ab88d33bcf">  246</a></span>&#160;          <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a4b2b50be1a466d37389063ab88d33bcf">probabilityDensity</a>(std::size_t i, <span class="keyword">const</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> &amp;c);</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <span class="keyword">private</span>:</div>
<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a895b274e1765f3f9b06245e0d9a95474">  250</a></span>&#160;          std::vector&lt;Gaussian&gt; <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a895b274e1765f3f9b06245e0d9a95474">gaussians_</a>;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      };</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html">  254</a></span>&#160;      <span class="keyword">class </span><a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html">GaussianFitter</a></div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      {</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html">GaussianFitter</a> (<span class="keywordtype">float</span> epsilon = 0.0001)</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;          : <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a1f1b50320095c09f8d92febc350edbee">sum_</a> (Eigen::Vector3f::Zero ())</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;          , <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a4367cc7287f3620bdf379b7c6a6d7460">accumulator_</a> (Eigen::Matrix3f::Zero ())</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;          , <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a2d6b78ddb11277b60a6c113380f987ef">count_</a> (0)</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;          , <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a5678384a9eaa19213a56a474a1bbc269">epsilon_</a> (epsilon)</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        { }</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160; </div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        <span class="keywordtype">void</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a6d1cf36503fb2ad54197750e30f9ec9a">  266</a></span>&#160;        <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a6d1cf36503fb2ad54197750e30f9ec9a">add</a> (<span class="keyword">const</span> <a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">Color</a> &amp;c);</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keywordtype">void</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#aeba5a5cc9e6a88770a02e47eb5b7523b">  269</a></span>&#160;        <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#aeba5a5cc9e6a88770a02e47eb5b7523b">fit</a> (<a class="code" href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">Gaussian</a>&amp; g, std::size_t total_count, <span class="keywordtype">bool</span> compute_eigens = <span class="keyword">false</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;        <span class="keywordtype">float</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a12881c27c50ef2b52dfba1d34e1c4821">  272</a></span>&#160;        <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a12881c27c50ef2b52dfba1d34e1c4821">getEpsilon</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a5678384a9eaa19213a56a474a1bbc269">epsilon_</a>); }</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;        <span class="keywordtype">void</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a061af9e895042e751462e482de3550ac">  278</a></span>&#160;        <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a061af9e895042e751462e482de3550ac">setEpsilon</a> (<span class="keywordtype">float</span> epsilon) { <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a5678384a9eaa19213a56a474a1bbc269">epsilon_</a> = epsilon; }</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160; </div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        <span class="keyword">private</span>:</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a1f1b50320095c09f8d92febc350edbee">  282</a></span>&#160;        Eigen::Vector3f <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a1f1b50320095c09f8d92febc350edbee">sum_</a>;</div>
<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a4367cc7287f3620bdf379b7c6a6d7460">  284</a></span>&#160;        Eigen::Matrix3f <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a4367cc7287f3620bdf379b7c6a6d7460">accumulator_</a>;</div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a2d6b78ddb11277b60a6c113380f987ef">  286</a></span>&#160;        uint32_t <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a2d6b78ddb11277b60a6c113380f987ef">count_</a>;</div>
<div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a5678384a9eaa19213a56a474a1bbc269">  288</a></span>&#160;        <span class="keywordtype">float</span> <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a5678384a9eaa19213a56a474a1bbc269">epsilon_</a>;</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      };</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;      PCL_EXPORTS <span class="keywordtype">void</span></div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      buildGMMs (<span class="keyword">const</span> <a class="code" href="classpcl_1_1_point_cloud.html">Image</a> &amp;image,</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                 <span class="keyword">const</span> std::vector&lt;int&gt;&amp; indices,</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                 <span class="keyword">const</span> std::vector&lt;SegmentationValue&gt; &amp;hardSegmentation,</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;                 std::vector&lt;std::size_t&gt; &amp;components,</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                 <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">GMM</a> &amp;background_GMM, <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">GMM</a> &amp;foreground_GMM);</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      PCL_EXPORTS <span class="keywordtype">void</span></div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      learnGMMs (<span class="keyword">const</span> <a class="code" href="classpcl_1_1_point_cloud.html">Image</a>&amp; image,</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;                 <span class="keyword">const</span> std::vector&lt;int&gt;&amp; indices,</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                 <span class="keyword">const</span> std::vector&lt;SegmentationValue&gt;&amp; hard_segmentation,</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;                 std::vector&lt;std::size_t&gt;&amp; components,</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                 <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">GMM</a>&amp; background_GMM, <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">GMM</a>&amp; foreground_GMM);</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    }</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  };</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160; </div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Po<span class="keywordtype">int</span>T&gt;</div>
<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html">  317</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classpcl_1_1_grab_cut.html">GrabCut</a> : <span class="keyword">public</span> <a class="code" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase</a>&lt;PointT&gt;</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  {</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <span class="keyword">public</span>:</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt;PointT&gt;</a> <a class="code" href="classpcl_1_1search_1_1_search.html">KdTree</a>;</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> pcl::search::Search&lt;PointT&gt;::Ptr KdTreePtr;</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> PCLBase&lt;PointT&gt;::PointCloudConstPtr PointCloudConstPtr;</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> PCLBase&lt;PointT&gt;::PointCloudPtr PointCloudPtr;</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;      <span class="keyword">using</span> <a class="code" href="classpcl_1_1_p_c_l_base.html">PCLBase&lt;PointT&gt;::input_</a>;</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;      <span class="keyword">using</span> <a class="code" href="classpcl_1_1_p_c_l_base.html">PCLBase&lt;PointT&gt;::indices_</a>;</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;      <span class="keyword">using</span> <a class="code" href="classpcl_1_1_p_c_l_base.html">PCLBase&lt;PointT&gt;::fake_indices_</a>;</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a2d5e49f07d785356bc96428fb5ef7f7a">  329</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a2d5e49f07d785356bc96428fb5ef7f7a">GrabCut</a> (uint32_t K = 5, <span class="keywordtype">float</span> lambda = 50.f)</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;        : <a class="code" href="classpcl_1_1_grab_cut.html#a896c02aaa5cf6cdafa1c1c56c723a686">K_</a> (K)</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        , <a class="code" href="classpcl_1_1_grab_cut.html#a6b8b46ac34c420b3a55a4a3dba07177b">lambda_</a> (lambda)</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        , <a class="code" href="classpcl_1_1_grab_cut.html#aa5749bc1c92334b0a4d6d9195e780dc4">nb_neighbours_</a> (9)</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        , <a class="code" href="classpcl_1_1_grab_cut.html#aca4a4f8bc41f470ace77342d4d8cd983">initialized_</a> (false)</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      {}</div>
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#ae886145268ae9d00302237824f8f3b4b">  336</a></span>&#160;      <span class="keyword">virtual</span> <a class="code" href="classpcl_1_1_grab_cut.html#ae886145268ae9d00302237824f8f3b4b">~GrabCut</a> () {};</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;      <span class="comment">// /// Set input cloud</span></div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a1660eb464bfd7944de8661f4f7e90ecb">setInputCloud</a> (<span class="keyword">const</span> PointCloudConstPtr&amp; cloud);</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a0719b8f56539082c0bb7e8957a449a78">  342</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a0719b8f56539082c0bb7e8957a449a78">setBackgroundPoints</a> (<span class="keyword">const</span> PointCloudConstPtr&amp; background_points);</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#aa1d9e818041091e3e60377b72c0f3cfe">  345</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#aa1d9e818041091e3e60377b72c0f3cfe">setBackgroundPointsIndices</a> (<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2);</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#aa1d9e818041091e3e60377b72c0f3cfe">setBackgroundPointsIndices</a> (<span class="keyword">const</span> PointIndicesConstPtr&amp; indices);</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a2ab12ae233f94275e090b33bb87e7d8b">refine</a> ();</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a94cd3a0257244c06f4aa6d6d3d7bf8b5">refineOnce</a> ();</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;      <span class="keywordtype">float</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#acfd10ddb9bb658aac91191b232efdd81">  357</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#acfd10ddb9bb658aac91191b232efdd81">getLambda</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_grab_cut.html#a6b8b46ac34c420b3a55a4a3dba07177b">lambda_</a>); }</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a0c1c53a761cbdcb78ea945399799822e">  362</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a0c1c53a761cbdcb78ea945399799822e">setLambda</a> (<span class="keywordtype">float</span> lambda) { <a class="code" href="classpcl_1_1_grab_cut.html#a6b8b46ac34c420b3a55a4a3dba07177b">lambda_</a> = lambda; }</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      uint32_t</div>
<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a28c87a88fc86e84ef54f91072a823808">  365</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a28c87a88fc86e84ef54f91072a823808">getK</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_grab_cut.html#a896c02aaa5cf6cdafa1c1c56c723a686">K_</a>); }</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a3d7aa7a82cd3e53e724a1c6841518ccf">  370</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a3d7aa7a82cd3e53e724a1c6841518ccf">setK</a> (uint32_t K) { <a class="code" href="classpcl_1_1_grab_cut.html#a896c02aaa5cf6cdafa1c1c56c723a686">K_</a> = K; }</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a28c5aed9323d69b8324c63413f354b0f">  375</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a28c5aed9323d69b8324c63413f354b0f">setSearchMethod</a> (<span class="keyword">const</span> KdTreePtr &amp;tree) { <a class="code" href="classpcl_1_1_grab_cut.html#a9e3eb57a161bc87760431778147c2a28">tree_</a> = tree; }</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;      <span class="keyword">inline</span> KdTreePtr</div>
<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a9988564d08ac28bddbf21eb28110c3f8">  378</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a9988564d08ac28bddbf21eb28110c3f8">getSearchMethod</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_grab_cut.html#a9e3eb57a161bc87760431778147c2a28">tree_</a>); }</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a4f685d2d7d97c6313e2010649705dcbc">  383</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a4f685d2d7d97c6313e2010649705dcbc">setNumberOfNeighbours</a> (<span class="keywordtype">int</span> nb_neighbours) { <a class="code" href="classpcl_1_1_grab_cut.html#aa5749bc1c92334b0a4d6d9195e780dc4">nb_neighbours_</a> = nb_neighbours; }</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;      <span class="keywordtype">int</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#afde03d2c2fc08ac9c5f83100985a0d79">  386</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#afde03d2c2fc08ac9c5f83100985a0d79">getNumberOfNeighbours</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_grab_cut.html#aa5749bc1c92334b0a4d6d9195e780dc4">nb_neighbours_</a>); }</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a540af5196a39ae6b10d2caa3b3856bbe">extract</a> (std::vector&lt;pcl::PointIndices&gt;&amp; clusters);</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160; </div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      <span class="comment">// Storage for N-link weights, each pixel stores links to nb_neighbours</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="structpcl_1_1_grab_cut_1_1_n_links.html">  397</a></span>&#160;      <span class="keyword">struct </span><a class="code" href="structpcl_1_1_grab_cut_1_1_n_links.html">NLinks</a></div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;      {</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;        <a class="code" href="structpcl_1_1_grab_cut_1_1_n_links.html">NLinks</a> () : nb_links (0), indices (0), dists (0), weights (0) {}</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160; </div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        <span class="keywordtype">int</span> nb_links;</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        std::vector&lt;int&gt; indices;</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        std::vector&lt;float&gt; dists;</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;        std::vector&lt;float&gt; weights;</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;      };</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;      <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;      initCompute ();</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;      <span class="keyword">typedef</span> pcl::segmentation::grabcut::BoykovKolmogorov::vertex_descriptor vertex_descriptor;</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a5e902baa6e465887328fe56a4079a502">computeBetaOrganized</a> ();</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#ab8dd0bbf952b886ff73c36057603e1fa">computeBetaNonOrganized</a> ();</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a0143bf186604b4e6306a408c7c4eab78">computeL</a> ();</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a73356d3827973778f897f318dba2f21a">computeNLinksOrganized</a> ();</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a1e4e93f4798b0b4b5d22ebeb8802c482">computeNLinksNonOrganized</a> ();</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a2b5f5d6c6eba664c8b9802d232a1222e">setTrimap</a> (<span class="keyword">const</span> PointIndicesConstPtr &amp;indices, segmentation::grabcut::TrimapValue t);</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;      <span class="keywordtype">int</span></div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;      updateHardSegmentation ();</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a0ebb51759f4e9a2c8608e817eb38bf79">fitGMMs</a> ();</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a54c938fdaefedff69430c7cd090c7337">initGraph</a> ();</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a075dc111ee224e7fe0bb4b39c1a49606">addEdge</a> (vertex_descriptor v1, vertex_descriptor v2, <span class="keywordtype">float</span> capacity, <span class="keywordtype">float</span> rev_capacity);</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a8991a8e3e62e810cc810b4e8e1cd5d26">setTerminalWeights</a> (vertex_descriptor v, <span class="keywordtype">float</span> source_capacity, <span class="keywordtype">float</span> sink_capacity);</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a760ae840a38601e8b4e776a19343b24f">  443</a></span>&#160;      <a class="code" href="classpcl_1_1_grab_cut.html#a760ae840a38601e8b4e776a19343b24f">isSource</a> (vertex_descriptor v) { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_grab_cut.html#a343d48050e0d6149e8d47efd9cd6c1f8">graph_</a>.<a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a06dfdb9ddf8f184ded86fb58a3dbd445">inSourceTree</a> (v)); }</div>
<div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a4a10a01757e8a0a6eed1d757c6de93f2">  445</a></span>&#160;      uint32_t <a class="code" href="classpcl_1_1_grab_cut.html#a4a10a01757e8a0a6eed1d757c6de93f2">width_</a>;</div>
<div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#af2b5c68eb7b9b49a0fb555362ec84139">  447</a></span>&#160;      uint32_t <a class="code" href="classpcl_1_1_grab_cut.html#af2b5c68eb7b9b49a0fb555362ec84139">height_</a>;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;      <span class="comment">// Variables used in formulas from the paper.</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a896c02aaa5cf6cdafa1c1c56c723a686">  450</a></span>&#160;<span class="comment"></span>      uint32_t <a class="code" href="classpcl_1_1_grab_cut.html#a896c02aaa5cf6cdafa1c1c56c723a686">K_</a>;</div>
<div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a6b8b46ac34c420b3a55a4a3dba07177b">  452</a></span>&#160;      <span class="keywordtype">float</span> <a class="code" href="classpcl_1_1_grab_cut.html#a6b8b46ac34c420b3a55a4a3dba07177b">lambda_</a>;</div>
<div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#aa19ba69378ddcebd8138dbe34a0655bb">  454</a></span>&#160;      <span class="keywordtype">float</span> <a class="code" href="classpcl_1_1_grab_cut.html#aa19ba69378ddcebd8138dbe34a0655bb">beta_</a>;</div>
<div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a6746153bec64685615ea3d8c456c994c">  456</a></span>&#160;      <span class="keywordtype">float</span> <a class="code" href="classpcl_1_1_grab_cut.html#a6746153bec64685615ea3d8c456c994c">L_</a>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a9e3eb57a161bc87760431778147c2a28">  458</a></span>&#160;      KdTreePtr <a class="code" href="classpcl_1_1_grab_cut.html#a9e3eb57a161bc87760431778147c2a28">tree_</a>;</div>
<div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#aa5749bc1c92334b0a4d6d9195e780dc4">  460</a></span>&#160;      <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_grab_cut.html#aa5749bc1c92334b0a4d6d9195e780dc4">nb_neighbours_</a>;</div>
<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#aca4a4f8bc41f470ace77342d4d8cd983">  462</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="classpcl_1_1_grab_cut.html#aca4a4f8bc41f470ace77342d4d8cd983">initialized_</a>;</div>
<div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a876cc1b19bc0c4a656387c1cceac4c95">  464</a></span>&#160;      std::vector&lt;NLinks&gt; <a class="code" href="classpcl_1_1_grab_cut.html#a876cc1b19bc0c4a656387c1cceac4c95">n_links_</a>;</div>
<div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a9547c0ce3252dfa61bd5f80e9c491146">  466</a></span>&#160;      segmentation::grabcut::Image::Ptr <a class="code" href="classpcl_1_1_grab_cut.html#a9547c0ce3252dfa61bd5f80e9c491146">image_</a>;</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;      std::vector&lt;segmentation::grabcut::TrimapValue&gt; trimap_;</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;      std::vector&lt;std::size_t&gt; GMM_component_;</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      std::vector&lt;segmentation::grabcut::SegmentationValue&gt; hard_segmentation_;</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;      <span class="comment">// Not yet implemented (this would be interpreted as alpha)</span></div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;      std::vector&lt;float&gt; soft_segmentation_;</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;      <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">segmentation::grabcut::GMM</a> background_GMM_, foreground_GMM_;</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;      <span class="comment">// Graph part</span></div>
<div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#a343d48050e0d6149e8d47efd9cd6c1f8">  475</a></span>&#160;<span class="comment"></span>      <a class="code" href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html">pcl::segmentation::grabcut::BoykovKolmogorov</a> <a class="code" href="classpcl_1_1_grab_cut.html#a343d48050e0d6149e8d47efd9cd6c1f8">graph_</a>;</div>
<div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classpcl_1_1_grab_cut.html#aac39b46cfa40fab142539e5f41383c1f">  477</a></span>&#160;      std::vector&lt;vertex_descriptor&gt; <a class="code" href="classpcl_1_1_grab_cut.html#aac39b46cfa40fab142539e5f41383c1f">graph_nodes_</a>;</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  };</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;}</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160; </div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;<span class="preprocessor">#include &lt;pcl/segmentation/impl/grabcut_segmentation.hpp&gt;</span></div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160; </div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html"><div class="ttname"><a href="classpcl_1_1_grab_cut.html">pcl::GrabCut</a></div><div class="ttdoc">Implementation of the GrabCut segmentation in &quot;GrabCut — Interactive Foreground Extraction using Iter...</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:318</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a0143bf186604b4e6306a408c7c4eab78"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a0143bf186604b4e6306a408c7c4eab78">pcl::GrabCut::computeL</a></div><div class="ttdeci">void computeL()</div><div class="ttdoc">Compute L parameter from given lambda</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:492</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a0719b8f56539082c0bb7e8957a449a78"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a0719b8f56539082c0bb7e8957a449a78">pcl::GrabCut::setBackgroundPoints</a></div><div class="ttdeci">void setBackgroundPoints(const PointCloudConstPtr &amp;background_points)</div><div class="ttdoc">Set background points, foreground points = points \ background points</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a075dc111ee224e7fe0bb4b39c1a49606"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a075dc111ee224e7fe0bb4b39c1a49606">pcl::GrabCut::addEdge</a></div><div class="ttdeci">void addEdge(vertex_descriptor v1, vertex_descriptor v2, float capacity, float rev_capacity)</div><div class="ttdoc">Add an edge to the graph, graph must be oriented so we add the edge and its reverse</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:143</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a0c1c53a761cbdcb78ea945399799822e"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a0c1c53a761cbdcb78ea945399799822e">pcl::GrabCut::setLambda</a></div><div class="ttdeci">void setLambda(float lambda)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:362</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a0ebb51759f4e9a2c8608e817eb38bf79"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a0ebb51759f4e9a2c8608e817eb38bf79">pcl::GrabCut::fitGMMs</a></div><div class="ttdeci">virtual void fitGMMs()</div><div class="ttdoc">Fit Gaussian Multi Models</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:178</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a1660eb464bfd7944de8661f4f7e90ecb"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a1660eb464bfd7944de8661f4f7e90ecb">pcl::GrabCut::setInputCloud</a></div><div class="ttdeci">void setInputCloud(const PointCloudConstPtr &amp;cloud)</div><div class="ttdoc">Provide a pointer to the input dataset</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:74</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a1e4e93f4798b0b4b5d22ebeb8802c482"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a1e4e93f4798b0b4b5d22ebeb8802c482">pcl::GrabCut::computeNLinksNonOrganized</a></div><div class="ttdeci">void computeNLinksNonOrganized()</div><div class="ttdoc">Compute NLinks from cloud</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:329</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a28c5aed9323d69b8324c63413f354b0f"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a28c5aed9323d69b8324c63413f354b0f">pcl::GrabCut::setSearchMethod</a></div><div class="ttdeci">void setSearchMethod(const KdTreePtr &amp;tree)</div><div class="ttdoc">Provide a pointer to the search object.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:375</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a28c87a88fc86e84ef54f91072a823808"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a28c87a88fc86e84ef54f91072a823808">pcl::GrabCut::getK</a></div><div class="ttdeci">uint32_t getK()</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:365</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a2ab12ae233f94275e090b33bb87e7d8b"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a2ab12ae233f94275e090b33bb87e7d8b">pcl::GrabCut::refine</a></div><div class="ttdeci">virtual void refine()</div><div class="ttdoc">Run Grabcut refinement on the hard segmentation</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:205</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a2b5f5d6c6eba664c8b9802d232a1222e"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a2b5f5d6c6eba664c8b9802d232a1222e">pcl::GrabCut::setTrimap</a></div><div class="ttdeci">void setTrimap(const PointIndicesConstPtr &amp;indices, segmentation::grabcut::TrimapValue t)</div><div class="ttdoc">Edit Trimap</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:245</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a2d5e49f07d785356bc96428fb5ef7f7a"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a2d5e49f07d785356bc96428fb5ef7f7a">pcl::GrabCut::GrabCut</a></div><div class="ttdeci">GrabCut(uint32_t K=5, float lambda=50.f)</div><div class="ttdoc">Constructor</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:329</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a343d48050e0d6149e8d47efd9cd6c1f8"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a343d48050e0d6149e8d47efd9cd6c1f8">pcl::GrabCut::graph_</a></div><div class="ttdeci">pcl::segmentation::grabcut::BoykovKolmogorov graph_</div><div class="ttdoc">Graph for Graphcut</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:475</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a3d7aa7a82cd3e53e724a1c6841518ccf"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a3d7aa7a82cd3e53e724a1c6841518ccf">pcl::GrabCut::setK</a></div><div class="ttdeci">void setK(uint32_t K)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:370</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a4a10a01757e8a0a6eed1d757c6de93f2"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a4a10a01757e8a0a6eed1d757c6de93f2">pcl::GrabCut::width_</a></div><div class="ttdeci">uint32_t width_</div><div class="ttdoc">image width</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:445</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a4f685d2d7d97c6313e2010649705dcbc"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a4f685d2d7d97c6313e2010649705dcbc">pcl::GrabCut::setNumberOfNeighbours</a></div><div class="ttdeci">void setNumberOfNeighbours(int nb_neighbours)</div><div class="ttdoc">Allows to set the number of neighbours to find.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:383</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a540af5196a39ae6b10d2caa3b3856bbe"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a540af5196a39ae6b10d2caa3b3856bbe">pcl::GrabCut::extract</a></div><div class="ttdeci">void extract(std::vector&lt; pcl::PointIndices &gt; &amp;clusters)</div><div class="ttdoc">This method launches the segmentation algorithm and returns the clusters that were obtained during th...</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:498</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a54c938fdaefedff69430c7cd090c7337"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a54c938fdaefedff69430c7cd090c7337">pcl::GrabCut::initGraph</a></div><div class="ttdeci">void initGraph()</div><div class="ttdoc">Build the graph for GraphCut</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:263</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a5e902baa6e465887328fe56a4079a502"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a5e902baa6e465887328fe56a4079a502">pcl::GrabCut::computeBetaOrganized</a></div><div class="ttdeci">void computeBetaOrganized()</div><div class="ttdoc">Compute beta from image</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:422</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a6746153bec64685615ea3d8c456c994c"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a6746153bec64685615ea3d8c456c994c">pcl::GrabCut::L_</a></div><div class="ttdeci">float L_</div><div class="ttdoc">L = a large value to force a pixel to be foreground or background</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:456</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a6b8b46ac34c420b3a55a4a3dba07177b"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a6b8b46ac34c420b3a55a4a3dba07177b">pcl::GrabCut::lambda_</a></div><div class="ttdeci">float lambda_</div><div class="ttdoc">lambda = 50. This value was suggested the GrabCut paper.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:452</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a73356d3827973778f897f318dba2f21a"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a73356d3827973778f897f318dba2f21a">pcl::GrabCut::computeNLinksOrganized</a></div><div class="ttdeci">void computeNLinksOrganized()</div><div class="ttdoc">Compute NLinks from image</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:356</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a760ae840a38601e8b4e776a19343b24f"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a760ae840a38601e8b4e776a19343b24f">pcl::GrabCut::isSource</a></div><div class="ttdeci">bool isSource(vertex_descriptor v)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:443</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a876cc1b19bc0c4a656387c1cceac4c95"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a876cc1b19bc0c4a656387c1cceac4c95">pcl::GrabCut::n_links_</a></div><div class="ttdeci">std::vector&lt; NLinks &gt; n_links_</div><div class="ttdoc">Precomputed N-link weights</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:464</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a896c02aaa5cf6cdafa1c1c56c723a686"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a896c02aaa5cf6cdafa1c1c56c723a686">pcl::GrabCut::K_</a></div><div class="ttdeci">uint32_t K_</div><div class="ttdoc">Number of GMM components</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:450</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a8991a8e3e62e810cc810b4e8e1cd5d26"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a8991a8e3e62e810cc810b4e8e1cd5d26">pcl::GrabCut::setTerminalWeights</a></div><div class="ttdeci">void setTerminalWeights(vertex_descriptor v, float source_capacity, float sink_capacity)</div><div class="ttdoc">Set the weights of SOURCE --&gt; v and v --&gt; SINK</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:149</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a94cd3a0257244c06f4aa6d6d3d7bf8b5"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a94cd3a0257244c06f4aa6d6d3d7bf8b5">pcl::GrabCut::refineOnce</a></div><div class="ttdeci">virtual int refineOnce()</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:188</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a9547c0ce3252dfa61bd5f80e9c491146"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a9547c0ce3252dfa61bd5f80e9c491146">pcl::GrabCut::image_</a></div><div class="ttdeci">segmentation::grabcut::Image::Ptr image_</div><div class="ttdoc">Converted input</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:466</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a9988564d08ac28bddbf21eb28110c3f8"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a9988564d08ac28bddbf21eb28110c3f8">pcl::GrabCut::getSearchMethod</a></div><div class="ttdeci">KdTreePtr getSearchMethod()</div><div class="ttdoc">Get a pointer to the search method used.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:378</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_a9e3eb57a161bc87760431778147c2a28"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#a9e3eb57a161bc87760431778147c2a28">pcl::GrabCut::tree_</a></div><div class="ttdeci">KdTreePtr tree_</div><div class="ttdoc">Pointer to the spatial search object.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:458</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_aa19ba69378ddcebd8138dbe34a0655bb"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#aa19ba69378ddcebd8138dbe34a0655bb">pcl::GrabCut::beta_</a></div><div class="ttdeci">float beta_</div><div class="ttdoc">beta = 1/2 * average of the squared color distances between all pairs of 8-neighboring pixels.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:454</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_aa1d9e818041091e3e60377b72c0f3cfe"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#aa1d9e818041091e3e60377b72c0f3cfe">pcl::GrabCut::setBackgroundPointsIndices</a></div><div class="ttdeci">void setBackgroundPointsIndices(int x1, int y1, int x2, int y2)</div><div class="ttdoc">Set background indices, foreground indices = indices \ background indices</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_aa5749bc1c92334b0a4d6d9195e780dc4"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#aa5749bc1c92334b0a4d6d9195e780dc4">pcl::GrabCut::nb_neighbours_</a></div><div class="ttdeci">int nb_neighbours_</div><div class="ttdoc">Number of neighbours</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:460</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_aac39b46cfa40fab142539e5f41383c1f"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#aac39b46cfa40fab142539e5f41383c1f">pcl::GrabCut::graph_nodes_</a></div><div class="ttdeci">std::vector&lt; vertex_descriptor &gt; graph_nodes_</div><div class="ttdoc">Graph nodes</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:477</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_ab8dd0bbf952b886ff73c36057603e1fa"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#ab8dd0bbf952b886ff73c36057603e1fa">pcl::GrabCut::computeBetaNonOrganized</a></div><div class="ttdeci">void computeBetaNonOrganized()</div><div class="ttdoc">Compute beta from cloud</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.hpp:383</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_aca4a4f8bc41f470ace77342d4d8cd983"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#aca4a4f8bc41f470ace77342d4d8cd983">pcl::GrabCut::initialized_</a></div><div class="ttdeci">bool initialized_</div><div class="ttdoc">is segmentation initialized</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:462</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_acfd10ddb9bb658aac91191b232efdd81"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#acfd10ddb9bb658aac91191b232efdd81">pcl::GrabCut::getLambda</a></div><div class="ttdeci">float getLambda()</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:357</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_ae886145268ae9d00302237824f8f3b4b"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#ae886145268ae9d00302237824f8f3b4b">pcl::GrabCut::~GrabCut</a></div><div class="ttdeci">virtual ~GrabCut()</div><div class="ttdoc">Desctructor</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:336</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_af2b5c68eb7b9b49a0fb555362ec84139"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#af2b5c68eb7b9b49a0fb555362ec84139">pcl::GrabCut::height_</a></div><div class="ttdeci">uint32_t height_</div><div class="ttdoc">image height</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:447</div></div>
<div class="ttc" id="aclasspcl_1_1_grab_cut_html_afde03d2c2fc08ac9c5f83100985a0d79"><div class="ttname"><a href="classpcl_1_1_grab_cut.html#afde03d2c2fc08ac9c5f83100985a0d79">pcl::GrabCut::getNumberOfNeighbours</a></div><div class="ttdeci">int getNumberOfNeighbours() const</div><div class="ttdoc">Returns the number of neighbours to find.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:386</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase</a></div><div class="ttdoc">PCL base class. Implements methods that are used by most PCL algorithms.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:69</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a></div><div class="ttdoc">PointCloud represents the base class in PCL for storing collections of 3D points.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:173</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_search_html"><div class="ttname"><a href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a></div><div class="ttdoc">Generic search class. All search wrappers must inherit from this.</div><div class="ttdef"><b>Definition:</b> search.h:75</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html">pcl::segmentation::grabcut::BoykovKolmogorov</a></div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:62</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a00f1d195d1e804fb5109c345d97a6806"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a00f1d195d1e804fb5109c345d97a6806">pcl::segmentation::grabcut::BoykovKolmogorov::preAugmentPaths</a></div><div class="ttdeci">void preAugmentPaths()</div><div class="ttdoc">pre-augment s-u-t and s-u-v-t paths</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a0391da5166a52b7dc3c07dad3630650a"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a0391da5166a52b7dc3c07dad3630650a">pcl::segmentation::grabcut::BoykovKolmogorov::flow_value_</a></div><div class="ttdeci">double flow_value_</div><div class="ttdoc">current flow value (includes constant)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:158</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a06dfdb9ddf8f184ded86fb58a3dbd445"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a06dfdb9ddf8f184ded86fb58a3dbd445">pcl::segmentation::grabcut::BoykovKolmogorov::inSourceTree</a></div><div class="ttdeci">bool inSourceTree(int u) const</div><div class="ttdoc">return true if u is in the s-set after calling solve.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:101</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a12a00bbbbec04bddc5a4b109bf1caa50"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a12a00bbbbec04bddc5a4b109bf1caa50">pcl::segmentation::grabcut::BoykovKolmogorov::cut_</a></div><div class="ttdeci">std::vector&lt; unsigned char &gt; cut_</div><div class="ttdoc">identifies which side of the cut a node falls</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:160</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a1ad7468a502d40ccd9ee8ef44ef04eea"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a1ad7468a502d40ccd9ee8ef44ef04eea">pcl::segmentation::grabcut::BoykovKolmogorov::~BoykovKolmogorov</a></div><div class="ttdeci">virtual ~BoykovKolmogorov()</div><div class="ttdoc">destructor</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:70</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a1f1f79e64c2c3d8cce48c6cf6dec8d63"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a1f1f79e64c2c3d8cce48c6cf6dec8d63">pcl::segmentation::grabcut::BoykovKolmogorov::addSourceEdge</a></div><div class="ttdeci">void addSourceEdge(int u, double cap)</div><div class="ttdoc">add edge from s to nodeId</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a223cd3eb267bb2dbbc1233c3c9fc23b1"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a223cd3eb267bb2dbbc1233c3c9fc23b1">pcl::segmentation::grabcut::BoykovKolmogorov::addTargetEdge</a></div><div class="ttdeci">void addTargetEdge(int u, double cap)</div><div class="ttdoc">add edge from nodeId to t</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a29f92fe3de2e36ace334802f9bd82eab"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a29f92fe3de2e36ace334802f9bd82eab">pcl::segmentation::grabcut::BoykovKolmogorov::nodes_</a></div><div class="ttdeci">std::vector&lt; capacitated_edge &gt; nodes_</div><div class="ttdoc">nodes and their outgoing internal edges</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:156</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a2b2b7c5eadacba3f73477771611c8e44"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a2b2b7c5eadacba3f73477771611c8e44">pcl::segmentation::grabcut::BoykovKolmogorov::markActive</a></div><div class="ttdeci">void markActive(int u)</div><div class="ttdoc">mark vertex as active</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a304cea3dae4656b0e48617a27b78be73"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a304cea3dae4656b0e48617a27b78be73">pcl::segmentation::grabcut::BoykovKolmogorov::augmentPath</a></div><div class="ttdeci">void augmentPath(const std::pair&lt; int, int &gt; &amp;path, std::deque&lt; int &gt; &amp;orphans)</div><div class="ttdoc">augment the path found by expandTrees; return orphaned subtrees</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a429cf2fb98ced583e26b1b70a4f5d350"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a429cf2fb98ced583e26b1b70a4f5d350">pcl::segmentation::grabcut::BoykovKolmogorov::isActive</a></div><div class="ttdeci">bool isActive(int u) const</div><div class="ttdoc">active if head or previous node is not the terminal</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:144</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a4337b04c14ebfba5b3b4563706c6737f"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a4337b04c14ebfba5b3b4563706c6737f">pcl::segmentation::grabcut::BoykovKolmogorov::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">reset all edge capacities to zero (but don't free the graph)</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a4915233eba8ce733879883f043355a9a"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a4915233eba8ce733879883f043355a9a">pcl::segmentation::grabcut::BoykovKolmogorov::edge_pair</a></div><div class="ttdeci">std::pair&lt; capacitated_edge::iterator, capacitated_edge::iterator &gt; edge_pair</div><div class="ttdoc">edge pair</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:121</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a50d1dfc59492d885bcdc9acfb6b51fb4"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a50d1dfc59492d885bcdc9acfb6b51fb4">pcl::segmentation::grabcut::BoykovKolmogorov::isActiveSetEmpty</a></div><div class="ttdeci">bool isActiveSetEmpty() const</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:141</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a572dceff93c2aec0c50b3215e902c53c"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a572dceff93c2aec0c50b3215e902c53c">pcl::segmentation::grabcut::BoykovKolmogorov::target_edges_</a></div><div class="ttdeci">std::vector&lt; double &gt; target_edges_</div><div class="ttdoc">edges entering the target</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:154</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a60f4052e843bad644d30f47f84bca564"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a60f4052e843bad644d30f47f84bca564">pcl::segmentation::grabcut::BoykovKolmogorov::markInactive</a></div><div class="ttdeci">void markInactive(int u)</div><div class="ttdoc">mark vertex as inactive</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a61161a98ff353bf410c377cd6237b014"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a61161a98ff353bf410c377cd6237b014">pcl::segmentation::grabcut::BoykovKolmogorov::expandTrees</a></div><div class="ttdeci">std::pair&lt; int, int &gt; expandTrees()</div><div class="ttdoc">expand trees until a path is found (or no path (-1, -1))</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a623178a7d87583cd117f902512b6bc7a"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a623178a7d87583cd117f902512b6bc7a">pcl::segmentation::grabcut::BoykovKolmogorov::parents_</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; int, edge_pair &gt; &gt; parents_</div><div class="ttdoc">search tree (also uses cut_)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:166</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a62d106c586c83e9005302de2368f84da"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a62d106c586c83e9005302de2368f84da">pcl::segmentation::grabcut::BoykovKolmogorov::numNodes</a></div><div class="ttdeci">size_t numNodes() const</div><div class="ttdoc">get number of nodes in the graph</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:73</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a660e9da2e61c98dccc2d33b29d0791d7"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a660e9da2e61c98dccc2d33b29d0791d7">pcl::segmentation::grabcut::BoykovKolmogorov::inSinkTree</a></div><div class="ttdeci">bool inSinkTree(int u) const</div><div class="ttdoc">return true if u is in the t-set after calling solve</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:104</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a6be512418cba4019dcd7d2391915c7c6"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a6be512418cba4019dcd7d2391915c7c6">pcl::segmentation::grabcut::BoykovKolmogorov::TERMINAL</a></div><div class="ttdeci">static const int TERMINAL</div><div class="ttdoc">parents_ flag for terminal state</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:164</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a8575f4bd3e4d4d506aab2c54e4a5e72e"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8575f4bd3e4d4d506aab2c54e4a5e72e">pcl::segmentation::grabcut::BoykovKolmogorov::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">clear the graph and internal datastructures</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a8903c612c1168079a47bf2cb0ff5f8c7"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8903c612c1168079a47bf2cb0ff5f8c7">pcl::segmentation::grabcut::BoykovKolmogorov::BoykovKolmogorov</a></div><div class="ttdeci">BoykovKolmogorov(std::size_t max_nodes=0)</div><div class="ttdoc">construct a maxflow/mincut problem with estimated max_nodes</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_a8e19d27bfcc7783a8973140dbbd86e9c"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#a8e19d27bfcc7783a8973140dbbd86e9c">pcl::segmentation::grabcut::BoykovKolmogorov::clearActive</a></div><div class="ttdeci">void clearActive()</div><div class="ttdoc">clear active set</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_aa41db19528abf4be9b162524086d5ab6"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa41db19528abf4be9b162524086d5ab6">pcl::segmentation::grabcut::BoykovKolmogorov::active_list_</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; int, int &gt; &gt; active_list_</div><div class="ttdoc">doubly-linked list (prev, next)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:168</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_aa87830572e5d176fc9b93a59b0e78b1b"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa87830572e5d176fc9b93a59b0e78b1b">pcl::segmentation::grabcut::BoykovKolmogorov::adoptOrphans</a></div><div class="ttdeci">void adoptOrphans(std::deque&lt; int &gt; &amp;orphans)</div><div class="ttdoc">adopt orphaned subtrees</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_aa934e5f0053cce97093f5dd97f2a1980"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aa934e5f0053cce97093f5dd97f2a1980">pcl::segmentation::grabcut::BoykovKolmogorov::solve</a></div><div class="ttdeci">double solve()</div><div class="ttdoc">solve the max-flow problem and return the flow</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_ab6d400905673c4b9ec935a44791c01a3"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#ab6d400905673c4b9ec935a44791c01a3">pcl::segmentation::grabcut::BoykovKolmogorov::addNodes</a></div><div class="ttdeci">int addNodes(std::size_t n=1)</div><div class="ttdoc">add nodes to the graph (returns the id of the first node added)</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_acacea870da92b1a569a69a4c09511358"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#acacea870da92b1a569a69a4c09511358">pcl::segmentation::grabcut::BoykovKolmogorov::addConstant</a></div><div class="ttdeci">void addConstant(double c)</div><div class="ttdoc">add constant flow to graph</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:85</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_ace0c1b72070cea507cb09433fb877d79"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#ace0c1b72070cea507cb09433fb877d79">pcl::segmentation::grabcut::BoykovKolmogorov::initializeTrees</a></div><div class="ttdeci">void initializeTrees()</div><div class="ttdoc">initialize trees from source and target</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_adee34f9ab647ace5b14822ff434d72fb"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#adee34f9ab647ace5b14822ff434d72fb">pcl::segmentation::grabcut::BoykovKolmogorov::capacitated_edge</a></div><div class="ttdeci">std::map&lt; int, double &gt; capacitated_edge</div><div class="ttdoc">capacitated edge</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:119</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_aed1c7994a1ab333673043375276619dd"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aed1c7994a1ab333673043375276619dd">pcl::segmentation::grabcut::BoykovKolmogorov::addEdge</a></div><div class="ttdeci">void addEdge(int u, int v, double cap_uv, double cap_vu=0.0)</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov_html_aefc40a1c6479d676cc99161243319aa9"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_boykov_kolmogorov.html#aefc40a1c6479d676cc99161243319aa9">pcl::segmentation::grabcut::BoykovKolmogorov::source_edges_</a></div><div class="ttdeci">std::vector&lt; double &gt; source_edges_</div><div class="ttdoc">edges leaving the source</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:152</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html">pcl::segmentation::grabcut::GMM</a></div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:221</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_a3e99b01e190f53b08ca7fbba773a1755"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a3e99b01e190f53b08ca7fbba773a1755">pcl::segmentation::grabcut::GMM::~GMM</a></div><div class="ttdeci">~GMM()</div><div class="ttdoc">Destructor</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:228</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_a4b2b50be1a466d37389063ab88d33bcf"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a4b2b50be1a466d37389063ab88d33bcf">pcl::segmentation::grabcut::GMM::probabilityDensity</a></div><div class="ttdeci">float probabilityDensity(std::size_t i, const Color &amp;c)</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_a5219e6b9ee0ba89bf795cf151c14a61b"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a5219e6b9ee0ba89bf795cf151c14a61b">pcl::segmentation::grabcut::GMM::GMM</a></div><div class="ttdeci">GMM()</div><div class="ttdoc">Initialize GMM with ddesired number of gaussians.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:224</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_a895b274e1765f3f9b06245e0d9a95474"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a895b274e1765f3f9b06245e0d9a95474">pcl::segmentation::grabcut::GMM::gaussians_</a></div><div class="ttdeci">std::vector&lt; Gaussian &gt; gaussians_</div><div class="ttdoc">array of gaussians</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:250</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_a8c870011d933a72b1885f2ee923ced53"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#a8c870011d933a72b1885f2ee923ced53">pcl::segmentation::grabcut::GMM::GMM</a></div><div class="ttdeci">GMM(std::size_t K)</div><div class="ttdoc">Initialize GMM with ddesired number of gaussians.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:226</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_aa03b1c650969a0cab96b582d9f05b30f"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#aa03b1c650969a0cab96b582d9f05b30f">pcl::segmentation::grabcut::GMM::resize</a></div><div class="ttdeci">void resize(std::size_t K)</div><div class="ttdoc">resize gaussians</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:234</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_aa89a83e75f62c730a7a3e171d9468af6"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#aa89a83e75f62c730a7a3e171d9468af6">pcl::segmentation::grabcut::GMM::getK</a></div><div class="ttdeci">std::size_t getK() const</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:231</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_g_m_m_html_ab373bf483a57ede2e0339c910652b0aa"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_g_m_m.html#ab373bf483a57ede2e0339c910652b0aa">pcl::segmentation::grabcut::GMM::probabilityDensity</a></div><div class="ttdeci">float probabilityDensity(const Color &amp;c)</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html">pcl::segmentation::grabcut::GaussianFitter</a></div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:255</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a061af9e895042e751462e482de3550ac"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a061af9e895042e751462e482de3550ac">pcl::segmentation::grabcut::GaussianFitter::setEpsilon</a></div><div class="ttdeci">void setEpsilon(float epsilon)</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:278</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a12881c27c50ef2b52dfba1d34e1c4821"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a12881c27c50ef2b52dfba1d34e1c4821">pcl::segmentation::grabcut::GaussianFitter::getEpsilon</a></div><div class="ttdeci">float getEpsilon()</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:272</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a1f1b50320095c09f8d92febc350edbee"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a1f1b50320095c09f8d92febc350edbee">pcl::segmentation::grabcut::GaussianFitter::sum_</a></div><div class="ttdeci">Eigen::Vector3f sum_</div><div class="ttdoc">sum of r,g, and b</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:282</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a2d6b78ddb11277b60a6c113380f987ef"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a2d6b78ddb11277b60a6c113380f987ef">pcl::segmentation::grabcut::GaussianFitter::count_</a></div><div class="ttdeci">uint32_t count_</div><div class="ttdoc">count of color samples added to the gaussian</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:286</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a4367cc7287f3620bdf379b7c6a6d7460"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a4367cc7287f3620bdf379b7c6a6d7460">pcl::segmentation::grabcut::GaussianFitter::accumulator_</a></div><div class="ttdeci">Eigen::Matrix3f accumulator_</div><div class="ttdoc">matrix of products (i.e. r*r, r*g, r*b), some values are duplicated.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:284</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a5678384a9eaa19213a56a474a1bbc269"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a5678384a9eaa19213a56a474a1bbc269">pcl::segmentation::grabcut::GaussianFitter::epsilon_</a></div><div class="ttdeci">float epsilon_</div><div class="ttdoc">small value to add to covariance matrix diagonal to avoid singular values</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:288</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_a6d1cf36503fb2ad54197750e30f9ec9a"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#a6d1cf36503fb2ad54197750e30f9ec9a">pcl::segmentation::grabcut::GaussianFitter::add</a></div><div class="ttdeci">void add(const Color &amp;c)</div><div class="ttdoc">Add a color sample</div></div>
<div class="ttc" id="aclasspcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter_html_aeba5a5cc9e6a88770a02e47eb5b7523b"><div class="ttname"><a href="classpcl_1_1segmentation_1_1grabcut_1_1_gaussian_fitter.html#aeba5a5cc9e6a88770a02e47eb5b7523b">pcl::segmentation::grabcut::GaussianFitter::fit</a></div><div class="ttdeci">void fit(Gaussian &amp;g, std::size_t total_count, bool compute_eigens=false) const</div><div class="ttdoc">Build the gaussian out of all the added color samples</div></div>
<div class="ttc" id="acommon_2include_2pcl_2point__types_8h_html"><div class="ttname"><a href="common_2include_2pcl_2point__types_8h.html">point_types.h</a></div></div>
<div class="ttc" id="astructpcl_1_1_grab_cut_1_1_n_links_html"><div class="ttname"><a href="structpcl_1_1_grab_cut_1_1_n_links.html">pcl::GrabCut::NLinks</a></div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:398</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
<div class="ttc" id="astructpcl_1_1_r_g_b_html"><div class="ttname"><a href="structpcl_1_1_r_g_b.html">pcl::RGB</a></div><div class="ttdoc">A structure representing RGB color information.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:334</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_color_html"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_color.html">pcl::segmentation::grabcut::Color</a></div><div class="ttdoc">Structure to save RGB colors into floats</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:174</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html">pcl::segmentation::grabcut::Gaussian</a></div><div class="ttdoc">Gaussian structure</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:202</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_a464722f163acee0110b08eeb4c952fed"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a464722f163acee0110b08eeb4c952fed">pcl::segmentation::grabcut::Gaussian::pi</a></div><div class="ttdeci">float pi</div><div class="ttdoc">weighting of this gaussian in the GMM.</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:213</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_a4dd037ad492196e9eed459f1762a4c69"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a4dd037ad492196e9eed459f1762a4c69">pcl::segmentation::grabcut::Gaussian::determinant</a></div><div class="ttdeci">float determinant</div><div class="ttdoc">determinant of the covariance matrix</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:209</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_a7216976d40e15117fd7f5c450d0f081f"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a7216976d40e15117fd7f5c450d0f081f">pcl::segmentation::grabcut::Gaussian::covariance</a></div><div class="ttdeci">Eigen::Matrix3f covariance</div><div class="ttdoc">covariance matrix of the gaussian</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:207</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_a8eab0578f25643885261117e1b2e868f"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a8eab0578f25643885261117e1b2e868f">pcl::segmentation::grabcut::Gaussian::inverse</a></div><div class="ttdeci">Eigen::Matrix3f inverse</div><div class="ttdoc">inverse of the covariance matrix</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:211</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_a96d8e7d50478a2712d56437ed05e20ee"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#a96d8e7d50478a2712d56437ed05e20ee">pcl::segmentation::grabcut::Gaussian::eigenvector</a></div><div class="ttdeci">Eigen::Vector3f eigenvector</div><div class="ttdoc">eigenvector corresponding to the heighest eigenvector</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:217</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_aa92436d5571a19e48341798ca2f19b65"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#aa92436d5571a19e48341798ca2f19b65">pcl::segmentation::grabcut::Gaussian::eigenvalue</a></div><div class="ttdeci">float eigenvalue</div><div class="ttdoc">heighest eigenvalue of covariance matrix</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:215</div></div>
<div class="ttc" id="astructpcl_1_1segmentation_1_1grabcut_1_1_gaussian_html_af1a98d6b653238bec0752db1190a368b"><div class="ttname"><a href="structpcl_1_1segmentation_1_1grabcut_1_1_gaussian.html#af1a98d6b653238bec0752db1190a368b">pcl::segmentation::grabcut::Gaussian::mu</a></div><div class="ttdeci">Color mu</div><div class="ttdoc">mean of the gaussian</div><div class="ttdef"><b>Definition:</b> grabcut_segmentation.h:205</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_20ddda488709b7b18816b240f9df52db.html">segmentation</a></li><li class="navelem"><a class="el" href="dir_d73ea44817f729d5e7cf775c9e236264.html">include</a></li><li class="navelem"><a class="el" href="dir_864cadfcf76019fd9a0a836ee881d655.html">pcl</a></li><li class="navelem"><a class="el" href="dir_75b522e316e1b3af642e1cdb6b6108b7.html">segmentation</a></li><li class="navelem"><b>grabcut_segmentation.h</b></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
